﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;

namespace nr.Reports
{
    public class ReportColumnStyle
    {
        /// <summary>
        /// nome del campo collegato nella sorgente dati
        /// </summary>
        private string fieldName;
        /// <summary>
        /// intestazione della colonna
        /// </summary>
        private string headerText;
        /// <summary>
        /// formattazione del testo
        /// </summary>
        private string textFormat;
        /// <summary>
        /// allineamento della colonna
        /// </summary>
        private StringAlignment alignment;
        /// <summary>
        /// larghezza della colonna
        /// </summary>
        private float width;
        /// <summary>
        /// Legge/Imposta il campo collegato alla colonna nella sorgente dati
        /// </summary>
        public string FieldName { get { return fieldName; } set { fieldName = value; } }
        /// <summary>
        /// Legge/Imposta l'intestazione della colonna
        /// </summary>
        public string HeaderText { get { return headerText; } set { headerText = value; } }
        /// <summary>
        /// Legge/Imposta il formato di visualizzazione del testo
        /// </summary>
        public string TextFormat
        {
            get { return textFormat; }
            set
            {
                if (value.Length == 0)
                    textFormat = "{0}";
                else
                    textFormat = value;
            }
        }
        /// <summary>
        /// Legge/Imposta l'allineamento della colonna
        /// </summary>
        public StringAlignment Alignment { get { return alignment; } set { alignment = value; } }
        /// <summary>
        /// Legge/Imposta la larghezza della colonna
        /// </summary>
        /// <remarks>Il valore -1 indica un ridimensionamento automatico sulla base della larghezza delle altre colonne</remarks>
        public float Width
        {
            get { return width; }
            set
            {
                if (value < 0)
                    width = -1;
                else
                    width = value;
            }
        }
        /// <summary>
        /// Costruttore
        /// </summary>
        /// <param name="fieldName">Nome del campo collegato nella sorgente dati</param>
        /// <param name="headerText">Intestazione della colonna</param>
        public ReportColumnStyle(string fieldName, string headerText) : this(fieldName, headerText, string.Empty, StringAlignment.Near, -1) { }
        /// <summary>
        /// Costruttore
        /// </summary>
        /// <param name="fieldName">Nome del campo collegato nella sorgente dati</param>
        /// <param name="headerText">Intestazione della colonna</param>
        /// <param name="textFormat">Formato di visualizzazione del testo</param>
        /// <param name="alignment">Allineamento del testo nella colonna</param>
        /// <param name="width">Larghezza della colonna</param>
        public ReportColumnStyle(string fieldName, string headerText, string textFormat, StringAlignment alignment, float width)
        {
            FieldName = fieldName;
            HeaderText = headerText;
            Alignment = alignment;
            Width = width;
            TextFormat = textFormat;
        }
    }
}
